%% Joe Boyle
%% CMSI 601 Paper Outline
%% Loyola Marymount Univeristy

\documentclass[12pt]{article}

\usepackage{geometry}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{url}

% the following produces 1 inch margins all around with no header or footer
\topmargin  =15.mm         % beyond 25.mm
\oddsidemargin =0.4mm      % beyond 25.mm
\evensidemargin   =0.4mm      % beyond 25.mm
\headheight =0.mm
\headsep =0.mm
\textheight =220.mm
\textwidth  =165.mm
\parskip 7.2pt

\singlespacing 

\begin{document}
\begin{titlepage}
\centering
\vspace{1in}
Applying Agile Software Development Practices to a Scripting Language Environment

Joe Boyle

Dr. John David N. Dionisio 

\vspace{1.7in}
\today              % Activate to display a given date or no date

\vspace{1in}
Department of Electrical Engineering and Computer Science

Frank R. Seaver College of Science and Engineering

Loyola Marymount University
\end{titlepage}

\doublespacing
\pagenumbering{arabic}        % Arabic numerals from abstract to text
\newpage

\section*{Acknowledgements}      % Add ackowledements in this section of the paper  
I would like to thank the many people who inspired and assisted me for the past couple of
years.  My advisor Dr. John David N. Dionisio acted as a guide trusting me to find the
right path for myself.  Professor Robert ``BJ'' Johnson motivated and helped me with the
design and implementation of the ``t-unit'' package and the TUnit plug-in.  Without your ideas, 
none of this would have been possible. Special thanks to Mark James for the icons used in the plug-in. 
And I would like to thank the rest of the Loyola Marymount University
Computer Science faculty, including Dr. Philip M. Dorin, Dr. Ray Toal, and Dr. Stephanie
August.  I would be remiss if I did not also thank all my classmates for their support.  

But mostly I would like to my girlfriend Kim who had to live with me while I fulfilled my
goal of obtaining a Master's degree.  She was always patient with me and did not get on my case when 
I wanted to stay in and work on a Friday night.  And our dog Sitka who was always patient with me
when I delayed our walking time so I could get some work done.  I long for the days where we could
go for a nice relaxing walk.  And lastly, my parents
who did not get to see me too much because of my hectic schedule.  I promise we
can go to dinner from now on more than once every three months.  

``Cinderella story.  Outta nowhere.  A former greenskeeper, now, about to 
become the Masters champion.  
It looks like a mirac...It's in the hole!  It's in the hole!  It's in the hole!'' -Caddyshack
\newpage

\tableofcontents           % Table of contents
\newpage
\listoffigures
\newpage
%%\listoftables
%%\newpage

\abstract{
% Two paragraphs.  First one concludes with the problem statement.  
% Second paragraph states the solution and what it contributes to
% the field of computer science.  
The \textsl{waterfall software development model} develops software in a
downward flow.  Even though this model is still the primary methodology taught in schools, it lacks
the ability to adapt to change.  The software development community is moving to a better development process that can accomodate 
change at any moment.  In the mid 1990's, the Agile software development movement was born.  Agile practices allow for 
software development teams to adjust to changes fairly easily.  Many of the agile practices that are available
have been adopted with object-oriented software in mind.  However, these same agile practices 
can work with scripting languages as well.  
This paper examines a set of agile practices applied to a scripting language 
environment using the Tcl scripting language as an example.  

The most important of the agile practices is unit
testing.  The Tcl scripting language does not have a decent unit testing framework.  As a result, the ``t-unit'' package
was developed for the Tcl programming language.  In addition, an Eclipse IDE plug-in named ``TUnit'' was developed to create a
development environment where Tcl projects can be created, edited and unit tested from a central location.  Lastly,
an extension of the ``TUnit'' plug-in was developed to allow the unit testing capabilities of ``TUnit'' to work with 
an alternative plug-in for the Tcl programming language.  
}

\renewcommand \thesection{\Roman{section}}

% Background information and overview of my topic.  Will include the 
% problem statement and a brief description of the solution.  Will end
% with a basic description of the rest of the paper.  
\include{introduction}
\newpage

% A survey of the work done within Agile software development and how
% it relates to my topic.  In addition, the works will reinforce the 
% problem, that no one has shown how these practices can indeed be
% applied to scripting languages.  Many of the works obtained refer
% to object oriented programming languages.  
\include{relatedWork}
\newpage

% Discuss agile culture and principles
\include{agileSoftware}
\newpage

% This section will be the solution to my problem statement.  
% It will include a subsection for each agile practice being followed, a description
% of the practice, and how it has been adopted to scripting languages.  
% In addition, some effort will be taken to discuss how agile was adopted within 
% a company that typically has followed the plan-driven approach.  
\include{agilePractices}
\newpage

% What else can be done within this field of research?  In addition, what can
% be done with the t-unit package or the TUnit plugin?  
\include{futureResearch}
\label{futureResearch}
\newpage

% Summarize the results of the research and discuss the contribution to the 
% work previously done in this field.  
\include{conclusion}
\label{conclusion}
\newpage

\appendix
\section{Sample Tcl Build File}
\label{sampleBuild}
The following is an example automated build file for the Tcl programming
language.  It includes five targets: clean, prepare, compile, release and test. 
The automated build will help prevent defects while following the agile
practice of continuous integration.  
\include{build}
\include{sourceCode}
% The following documentation will be included within this section:
% t-unit design documentation
% t-unit package source code
% Sample ant build file that can be used for continuous integration
% TUnit Eclipse plugin source code
% TUnit Eclipse plugin unit tests source code

% Bibliography for the paper.  The source is actually a annotated bibliography
\pagebreak
\bibliography{../bibliography/CMSI_601_Paper}
\bibliographystyle{alpha}

\end{document}
